package com.cgt.day6;

import org.junit.Test;

import java.util.Arrays;

public class StringDemo {
    @Test
    public void test1(){
        //"abc"字符串常量，是一个对象
        String str1 = "abc";
        String str2 = new String("abc");
        String str3 = "abc";
        // == 比较地址值
        System.out.println(str1 == str2);//false
        System.out.println(str2 == str3);//false
        System.out.println(str3 == str1);//true
        // equals()比较内容
        System.out.println(str1.equals(str2));//true
        System.out.println(str2.equals(str3));//true
        System.out.println(str3.equals(str1));//true
    }

    @Test
    public void test2(){
        String str = "Java Study";
        //直接输出字符串
        System.out.println(str);
        //Java Study

        //转换成字符数组
        char[] chars = str.toCharArray();

        //直接输出字符数组
        System.out.println(chars);
        //Java Study

        //遍历输出字符数组
        for (int i = 0; i < chars.length; i++) {
            System.out.print(chars[i] + " ");
        }
        //J a v a   S t u d y

        //输出字符串长度
        System.out.println(str.length());
        //10

        //J a v a   S t u d y
        //0 1 2 3 4 5 6 7 8 9

        //输出索引（下标）为 5 的字符
        System.out.println(str.charAt(5));
        //S

        //输出第一个"a"字符的下标
        System.out.println(str.indexOf("a"));
        //1

        //从下标为2开始输出第一个"a" 字符的下标
        System.out.println(str.indexOf("a",2));
        //3

        //输出从后往前数第一个"a"字符的下标
        System.out.println(str.lastIndexOf("a"));
        //3

        //从下标为2开始输出从后往前数第一个"a"字符的下标
        System.out.println(str.lastIndexOf("a",2));
        //1

        //从下标为5开始输出从后往前数第一个"a"字符的下标
        System.out.println(str.lastIndexOf("a",5));
        //3

        //从下标为4开始输出从后往前数第一个"S"字符的下标
        System.out.println(str.lastIndexOf("S",4));
        //-1
        // 返回值-1 表示没有找到

        //从下标为10开始输出从后往前数第一个"va"字符串的首个字母的下标
        System.out.println(str.lastIndexOf("va", 10));
        //2
    }

    @Test
    public void test3(){
        String str1 = "Java Study";
        String str2 = "java study";
        // equals()比较内容
        System.out.println(str1.equals(str2));//false
        //忽略大小写比较内容
        System.out.println(str1.equalsIgnoreCase(str2));//true
        //判断是否包含指定字符串
        System.out.println(str1.contains("Java"));//true
        System.out.println(str2.contains("Java"));//false
        //判断是否以指定字符串开头
        System.out.println(str1.startsWith("Java"));//true
        System.out.println(str2.startsWith("Java"));//false
        //从下标为4的位置开始判断是否以指定字符串开头
        System.out.println(str1.startsWith(" St", 4));//true
        System.out.println(str2.startsWith(" St", 4));//false
        //判断是否以指定字符串结尾
        System.out.println(str1.endsWith("Study"));//true
        System.out.println(str2.endsWith("Study"));//false
        //判断是否以指定字符串结尾无法指定位置判断

        //判断是否是空字符串
        System.out.println(str1.isEmpty());//false
        System.out.println(str2.isEmpty());//false
        System.out.println("".isEmpty());//true
    }

    @Test
    public void test4(){
        String str = "java And";
        char[] array = {'j', 'a', 'v', 'a', ' ', 'A', 'n', 'd'};

        //转换成字符数组
        char[] array1 = str.toCharArray();
        System.out.println(array1);
        //java And

        //将字符数组转换成字符串
        String str1 = new String(array1);
        System.out.println(str1);
        //java And

        //调用Arrays工具类的快速输出数组内容方法。
        System.out.println(Arrays.toString(array1));
        //[j, a, v, a,  , A, n, d]
    }

    @Test
    public void test5(){
        String str1 = "Java Study";

        //将字符串中的"a"字符替换成"b"字符
        String str2 = str1.replace("a","b");
        System.out.println(str2);
        //Jbvb Study

        //使用字符串中的空格拆分字符串
        String[] array = str1.split(" ");
        System.out.println(Arrays.toString(array));
        //[Java, Study]
        //返回值为一个字符数组

        //从下标为5的字符开始切割（包含5）
        System.out.println(str1.substring(5));
        //Study

        //从下标为5的字符开始切割到下标为7（包含5，不包含7）
        System.out.println(str1.substring(5,7));
        //St

        String str3 = "   Java Study   ";

        //去除字符串的开头空格和结尾空格
        System.out.println(str3.trim());
        //Java Study

        //使用字符串中的"："拆分字符串
        String str4 = "1:2:3:4:5";
        String[] split1 = str4.split(":");
        System.out.println(Arrays.toString(split1));
        //[1, 2, 3, 4, 5]
    }

    @Test
    public void test6(){
        String str1 = "Java ";
        String str2 = "PHP ";
        String str3 = "Python ";
        String str4 = "UI ";

        String str = str1 + str2 + str3 + str4;
        System.out.println(str);

        StringBuffer buffer = new StringBuffer("BF ");
        buffer.append(str1).append(str2).append(str3).append(str4);//链式编程
        System.out.println(buffer);

        StringBuilder builder = new StringBuilder("BU ");
        builder.append(str1).append(str2).append(str3).append(str4);
        System.out.println(builder);
    }
}
